import ArrayStack from "./02_实现栈结构Stack(重构)";

//十进制转二进制利用栈来实现，数字一直除以2，取余，先得到的余数先进栈(后出栈),然后是在结果中表示的是后面的数字，先入栈再出栈
// 计算出余数，将余数进栈，将除的结果向下取整再用于本身的循环，
function decimalToBinary(decimal:number):string{
    const stack = new ArrayStack()

    let binary = ''
    //当数字除以2不为0时候，则一直循环
    while(decimal>0){
        //计算出余数
        const result = decimal % 2
        //将余数放入栈中
        stack.push(result)
        //将传入的数据除以二取整，再赋给本身用于循环的判断
        decimal = Math.floor(decimal/2) 
   
    }
    //一直取栈中的数据，止到取完为止
    while(!stack.isEmpty()){
        //拿到栈中最上面的数
        const res = stack.pop()
        //拼接字符串
        binary += res
    }
    return binary
}

console.log(decimalToBinary(35))
console.log(decimalToBinary(100))